home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / pennmush.000 / pennmush-1.50-p8-linux.tar / pennmush / options.h.dist < prev    next >
Text File  |  1993-04-15  |  16KB  |  454 lines

  1. /* options.h */
  2.  
  3. #ifndef __OPTIONS_H
  4. #define __OPTIONS_H
  5.  
  6. /* *********** READ THIS BEFORE YOU MODIFY ANYTHING IN THIS FILE *********** */
  7. /* WARNING:  All options in this file have the ability to signifigantly change
  8.  * the look and feel and sometimes even internal behavior of the program.
  9.  * The ones shipped as the default have been extensively tested.  Others have
  10.  * been tested to a (usually) lesser degree, and therefore might still have
  11.  * latent bugs.  If you change any of them from the default, PLEASE check
  12.  * to make sure that you know the full effects of what you are changing. And
  13.  * if you encounter any errors or compile time problems with any options
  14.  * other than the default settings, PLEASE inform lwl@eniac.seas.upenn.edu
  15.  * immediately, so that they can be fixed.  The same goes for any other bug
  16.  * you might find in using this software.  All efforts will be made to fix
  17.  * errors encountered, but unless given a FULL description of the error,
  18.  * (IE telling me that logging in doesn't work is insufficient.  telling
  19.  * me that logging in with WCREAT undefined still gives you the registration
  20.  * message is a lot better.  MOST effective would be a full dbx trace, or a
  21.  * patch for the bug.)  Enjoy using the program.
  22.  */
  23. /* ************************************************************************* */
  24.  
  25. /* This configuration file is divided into three sections:
  26.  *
  27.  *   1. System options.
  28.  *   2. Major MUSH options.
  29.  *   3. MUSH configuration options.
  30.  *   4. Constants and other definitions.
  31.  *
  32.  */
  33.  
  34. /*--------------------------------------------------------------------------
  35.  * System options.
  36.  */
  37.  
  38. /* Uncomment this if on a Xenix System. Please note that the xenix code
  39.  * has not been touched for _ages_ and you'll have to hack it yourself.
  40.  * (As of 1.50.p5, this code is no longer in the distribution. FTP an
  41.  * older version if you MUST have it.)
  42.  */
  43. /* #define XENIX */
  44.  
  45. /* Uncomment this if on a Xenix system with Xsockets. Once again note that
  46.  * the code is ancient and will need to be hacked. See note for XENIX.
  47.  */
  48. /* #define XSOCKET */
  49.  
  50. /* This should only be defined if your machine does not have toupper and
  51.  * memcpy already defined (Xenix, and perhaps some other systems.)
  52.  */
  53. /* #define BRAIN_DAMAGE */
  54.  
  55. /*--------------------------------------------------------------------------
  56.  * Major MUSH options.
  57.  */
  58.  
  59. /* This allows floating point operations. If you are on a very slow
  60.  * system, you might not wish to define this. It also makes the server
  61.  * somewhat larger. Define this if you find it useful.
  62.  */
  63. /* #define FLOATING_POINTS */
  64.  
  65. /* This converts your database to use the powers system. If you have a
  66.  * database from 1.50 patchlevel 6 or earlier, You will need to compile 
  67.  * with this, start up the game, @shutdown, compile _without_ this, and
  68.  * start the game up again.
  69.  */
  70. #define ADD_POWERS
  71.  
  72. /* This configuration option should normally be turned on, unless you have
  73.  * something on your MUSH which creates and destroys objects very quickly,
  74.  * thus causing the MUSH to scream about free list corruption very frequently.
  75.  */
  76. #define REPORT_TRACES
  77.  
  78. /* Define the following if you want the database stored in compressed format
  79.  * via the compress system command.  If this is enabled PANIC saves will NOT
  80.  * be compressed, so you will need to compress them before restarting if they
  81.  * are good saves.
  82.  */
  83. #define DBCOMP
  84.  
  85. /* Define the following if you are running on a machine so small that you
  86.  * cannnot fork a process off to do the save.
  87.  */
  88. /* #define NO_FORK */
  89.  
  90. /* This is the message that will be shown to players when the game dumps,
  91.  * if forking is disabled.
  92.  */
  93. #define DUMP_NOFORK_MESSAGE   \
  94.    "GAME: Dumping. The game will freeze for a few minutes."
  95.  
  96. #ifndef NO_FORK
  97. /* Define this if you wish to use vfork() instead of fork() */
  98. /* #define USE_VFORK */
  99. #endif
  100.  
  101. /* Defining this will cause passwords to be stored as straight text rather
  102.  * that encrypted via the unix crypt() command.
  103.  */
  104. /* #define NOCRYPT */
  105.  
  106. /* Define this if you don't wish your log file to be split up into several
  107.  * components. This saves on file descriptors and makes it easy to tail -f
  108.  * the log, but is inconvenient for quick scanning.
  109.  */
  110. /* #define SINGLE_LOGFILE */
  111.  
  112. /* Comment this out if you don't wish to use the built-in mail system. 
  113.  * The @mail command provides a flexible hardcoded mail system, which
  114.  * uses its own database to store messages. 
  115.  */
  116. #define USE_MAILER
  117.  
  118. /*  The chat channels system allows players to talk cross-MUSH to each
  119.  *  other, without needing to be in the same room. Whether or not you
  120.  *  want this depends on what type of MUSH you want. Set the value of
  121.  *  CHAT_SYSTEM to one of the following, depending on what you want:
  122.  *    0  -- do not use chat system, use database without chat field
  123.  *    1  -- do not use chat system, use database with chat field
  124.  *    2  -- use chat system, convert database to use chat
  125.  *    3  -- use chat system, use database that already has chat field
  126.  *  NOTE: Once you add chat to the database, you can't get rid of it!
  127.  */
  128. #define CHAT_SYSTEM 0
  129.  
  130. /* If this is defined, another file similar to News and Help can be used
  131.  * to store text, retrieved with "events <whatever>". This is useful if
  132.  * your newsfile is starting to get huge and kludgy.
  133.  */
  134. /* #define EVENTS */
  135.  
  136. /* If this is defined, the clock will be displayed in 24-hour "military time"
  137.  * format. Otherwise, some functions (such as the idle message for 'page')
  138.  * will return 12-hour time.
  139.  */
  140. #define MILITARY_TIME
  141.  
  142. /* Define this if you wish to be able to send and receive pages from
  143.  * other MUSHes. This will not endanger the MUSH's network at all.
  144.  * You will need an additional code module (not included in this
  145.  * distribution). Do not define this unless you have it (obtainable
  146.  * from lwl@eniac.seas.upenn.edu).
  147.  */
  148. /* #define ALLOW_RPAGE */
  149.  
  150. #ifdef USE_SMALLOC
  151. /* Define the following ONLY if using SMALLOC.C, and if you want accurate
  152.  * malloc stats.
  153.  */
  154. /* #define SLOW_STATISTICS */
  155. #endif /* USE_SMALLOC */
  156.  
  157. /* Defining this adds a simple tracking allocator of allocs and frees that
  158.  * keeps ref counts of what sort of memory is allocated, and how many.
  159.  * Good for testing for Memory leaks. Don't, however, define this unless
  160.  * 1. It's really necessary.  2. You know what you're doing.
  161.  */
  162. /* #define MEM_CHECK */
  163.  
  164. /* Boolexp_debugging should only be defined if you are testing new boolexp
  165.  * locks, etc.  otherwise, leave it undefined.
  166.  */
  167. /* #define BOOLEXP_DEBUGGING */
  168.  
  169. /* Define the following to get extra debug info into the log file. Unless
  170.  * you are doing some serious hacking of the code, leave this alone.
  171.  */
  172. /* #define DEBUG */
  173.  
  174. /* Uncomment this if you want to use the Virus (Robert Hood) Concentrator
  175.  * package.  A must if you want to have more than fifty-odd (depending
  176.  * on your system) users at once.
  177.  * As of 1.50.p5, this code is no longer included in the distribution,
  178.  * since it has not been updated in the past year. If you really want to
  179.  * hack at it, ftp an earlier patchlevel.
  180.  */
  181. /* #define CONCENTRATOR */
  182.  
  183. #ifdef CONCENTRATOR
  184. /* 
  185.  * Define the following if you want consistancy checking while using
  186.  * the Virus concentrator code.
  187.  */
  188. #define CHECKC
  189. #endif
  190.  
  191. /*--------------------------------------------------------------------------
  192.  * MUSH configuration options
  193.  */
  194.  
  195. /* Define this if you want the ability to lock out certain sites.  This code
  196.  * will take wildcards. Sites to lock out should be put in lockout.conf
  197.  * Sites to put on registration status should be in sites.conf
  198.  * If you define this, you will also need to define WCREAT.
  199.  */
  200. #define LOCKOUT
  201.  
  202. /* Define this if you want to enable registration commands. If LOCKOUT
  203.  * is defined, this should be too. Running with both this and LOCKOUT
  204.  * defined will allow you to register certain sites. Running with this
  205.  * but not LOCKOUT puts all sites on registration status.
  206.  */
  207. #define WCREAT
  208.  
  209. /* Define this if you want an "official" guest character. A guest character
  210.  * may not change his name or password, and may not build. You may wish to
  211.  * describe and @atrlock the guest. You will probably want this option if
  212.  * you use WCREAT.
  213.  */
  214. /* #define GUEST_RESTRICT */
  215.  
  216. /* Define the following if you wish to have a TinyTIM like @doing command.
  217.  */
  218. #define AT_DOING
  219.  
  220. /* Define this if you want to limit the maximum number of logins to the
  221.  * MUSH. This is useful if you know that you have a certain peak number
  222.  * before the MUSH freezes (which happens if you run out of file descriptors)
  223.  * or if you're running under a max-number-of-players restriction.
  224.  */
  225. /* #define LOGIN_LIMIT */
  226.  
  227. /* Define the following if you want an inactivity timeout - the game
  228.  * will automatically boot players who idle too long.
  229.  */
  230. /* #define IDLE_TIMEOUT */
  231.  
  232. /* One method of slowing bloat.  This method requires all builders to have
  233.  * a builder bit to build.
  234.  */
  235. /* #define RESTRICTED_BUILDING */
  236.  
  237. /* Define the following if you wish to allow object building.  Only useful
  238.  * if RESTRICTED_BUILDING is defined.
  239.  */
  240. /* #define FREE_OBJECTS */
  241.  
  242. /* An alternate method of slowing bloat.  This allows builders only X objects
  243.  * period.  Wizards can check and set quotas on players.  If used in
  244.  * conjunction with RESTRICTED_BUILDING, expect VERY slow growth.
  245.  */
  246. /* #define QUOTA */
  247.  
  248. /* Define this ONLY if you have a small maximum database size, and are
  249.  * about to reach it. This will limit the number of objects allowed to
  250.  * whatever number you set as DBTOP_MAX (defined later in this file).
  251.  * Even wizards are subject to this maximum.
  252.  */
  253. /* #define BUILDING_LIMIT */
  254.  
  255. /* Define this if you wish to allow players to steal money from each other */
  256. /* #define ROBBERS */
  257.  
  258. /* Defining the following will show an expanded flag name list when you 
  259.  * examine an object
  260.  */
  261. #define FLAGS_ON_EXAMINE
  262.  
  263. /* Defining this will show public attributes on examination of an object
  264.  * that a player doesn't own. (Like "examine/full" in TinyMUSH 2.0)
  265.  */
  266. #define EX_PUBLIC_ATTRIBS
  267.  
  268. /* Defining this will output attributes in TinyMUSH 2.0 format - i.e.
  269.  * "FOO(#4v): test" instead of "FOO [#4v]: test",  no attribute owners
  270.  * displayed unless different from the owner of the object, etc.
  271.  */
  272. /* #define TINY_ATTRS */
  273.  
  274. /* Define the following for increased wizard invisibility.  If it's enabled,
  275.  * says and poses by DARK wizards will show up as 'Someone ....'
  276.  * pages are not affected.
  277.  */
  278. #define FULL_INVIS
  279.  
  280. /*  Define this if you want @listen/@ahear/@aahear/@amhear to work on
  281.  *  players as well as objects.
  282.  */
  283. #define PLAYER_LISTEN
  284.  
  285. /* Define this if you do not want @pemit to notify the person doing the
  286.  * @pemitting (2.0-style).
  287.  */
  288. /* #define SILENT_PEMIT */
  289.  
  290. /*
  291.  * Define the following to enable the ROYALTY flag.  Players with
  292.  * this flag set have limited wiz powers: ie, they can look, examine,
  293.  * and @tel like wizards, but may not change things like wizards.
  294.  */
  295. #define ROYALTY_FLAG
  296.  
  297. /* Define the following to enable @whereis commands, and loc() on players
  298.  * by other players.  Both of these commands are modified by the effect
  299.  * of the PLAYER_UNFIND flag.
  300.  */
  301. #define PLAYER_LOCATE
  302.  
  303. /* Define the following if you wish to enable global exits and commands.
  304.  * Exits in the Master Room are considered global, as are user-defined
  305.  * $commands on objects in the Master Room.
  306.  */
  307. #define DO_GLOBALS
  308.  
  309. /* If this is defined, the zone of a player's location will be checked for
  310.  * an ACONNECT/ADISCONNECT attribute when the player connects/disconnects.
  311.  * If DO_GLOBALS is also defined, the master room will also be checked
  312.  * for an ACONNECT/ADISCONNECT.
  313.  */
  314. #define GLOBAL_CONNECTS
  315.  
  316. /* Comment this out if you wish to run without the INHERIT flag. This
  317.  * flag prevents objects without it from @forcing, @setting, or
  318.  * @triggering objects with the flag, or with a wizbit. This makes doing
  319.  * secure objects much easier. However, it can make programming certain
  320.  * objects somewhat clumsy, and may cause some initial confusion and
  321.  * frustration when first used on a MUSH not used to it.
  322.  */
  323. #define INHERIT_FLAG
  324.  
  325. /* Define this if you want NOSPOOF notification to show both the name of
  326.  * the spoofing object and its object number. If this option is not
  327.  * defined, nospoof notification will only show the name of the spoofer.
  328.  */
  329. /* #define PARANOID_NOSPOOF */
  330.  
  331. /* Objects which are NO_COMMAND are not checked for $commands. You can
  332.  * speed up your server somewhat this way. If you want to make the best
  333.  * use of this flag, define this option, which will automatically set
  334.  * the NO_COMMAND flag on all rooms and players in your current database.
  335.  */
  336. /* #define ADD_NO_COMMAND_FLAG */
  337.  
  338. /* This option uses the old method of coping with newlines. 
  339.  * If you're converting from a database that might have hard newlines,
  340.  * load with this defined and do a "@dump/paranoid". Otherwise, ignore it.
  341.  */
  342. /* #define OLD_NEWLINES */
  343.  
  344. /*---------------------------------------------------------------------------
  345.  * Constants and other good things.
  346.  */
  347.  
  348. /*----- default files -----*/
  349.  
  350. /* The format for the three following files is one site or name per
  351.  * line in the file. These files may be modified at any time, including
  352.  * while the MUSH is running.
  353.  */
  354.  
  355. #ifdef LOCKOUT
  356. /* sites in the lockout file will have connections shut down immediately
  357.  * with no message. Sites in the register file will not be able to
  358.  * create new players. Wildcards are allowed.
  359.  */
  360. #define LOCKOUT_FILE "lockout.conf"      
  361. #define REGISTER_FILE "sites.conf"       
  362. #endif                          /* LOCKOUT */
  363.  
  364. /* these names may not be used as player names. Wildcards are not allowed. */
  365. #define NAMES_FILE "names.conf"
  366.  
  367. /*----- log files -----*/
  368.  
  369. /* The primary log file for the MUSH is defined in the restart script.
  370.  * Checkpoints are written to a separate log, as are connects and
  371.  * disconnects from the game, commands used by wizards, report traces,
  372.  * and player commands. The defaults are listed below.
  373.  */
  374.  
  375. #define CHECKLOG  "log/checkpt.log"
  376. #define CONNLOG   "log/connect.log"
  377. #define WIZLOG    "log/wizard.log"
  378. #define TRACELOG  "log/trace.log"
  379. #define CMDLOG    "log/command.log"
  380.  
  381. /*----- Costs, dbref definitions, etc. -----*/
  382.  
  383. /* Define this if you wish to allow objects to be recycled.
  384.  * As of version 1.19 of this code, using PennMUSH without this 
  385.  * defined is no longer supported.
  386.  */
  387. #define DESTROY
  388.  
  389. /* Uber-wizard */
  390. #define GOD ((dbref) 1)
  391.  
  392. /* minimum cost to create various things */
  393. #define OBJECT_COST 10
  394. #define EXIT_COST 1
  395. #define LINK_COST 1
  396. #define ROOM_COST 10
  397. #define QUEUE_COST 10        /* deposit on commands in the queue */
  398. #define QUOTA_COST 1        /* quota cost of building an object */
  399.  
  400. /* cost for various special commands */
  401. #define FIND_COST 100
  402. #define PAGE_COST 0
  403.  
  404. /* costs of kill command */
  405. #define KILL_BASE_COST 100      /* prob = expenditure/KILL_BASE_COST */
  406. #define KILL_MIN_COST 10
  407. #define KILL_BONUS 50           /* paid to victim */
  408. #define MAX_ARG 100             /* maximum comma's arguments to function
  409.                  * (like @switch) */
  410.  
  411. #define QUEUE_LOSS 63        /* one command in 16 will cost one penny */
  412.                                 /* must be a power of two minus 1 */
  413.  
  414. #ifdef QUOTA
  415. #define START_QUOTA "20"    /* starting building quota for new players */
  416. #endif /* QUOTA */
  417.  
  418. #ifdef BUILDING_LIMIT
  419. #define DBTOP_MAX  20000        /* max number of objects in the database */
  420. #endif /* BUILDING_LIMIT */
  421.  
  422. /* amount of object endowment, based on cost */
  423. #define MAX_OBJECT_ENDOWMENT 100
  424. /* max value a wiz can put on an object */
  425. #define MAX_WIZ_OBJECT_ENDOWMENT 2000
  426.  
  427. /* amount at which temple stops being so profitable */
  428. #define MAX_PENNIES 100000
  429.  
  430. /* How deep can indirect locks go? */
  431. #define MAX_DEPTH 10
  432.  
  433. /* How many generations back can parents go? */
  434. #define MAX_PARENTS 10
  435.  
  436. #ifdef CONCENTRATOR
  437. /* port used if the virus concentrator is installed */
  438. #define INTERNAL_PORT 7372
  439. #endif /* CONCENTRATOR */
  440.  
  441. /*----- timer.c defines -----*/
  442.  
  443. /* Note: Don't make times multiples of each other
  444.  * otherwise players will have to wait a long time when
  445.  * two or more events coincide
  446.  */
  447.  
  448. /* time is in seconds */
  449. #define FIXUP_INTERVAL 601    /* fixup free list every 10 minutes */
  450.  
  451. #define GARBAGE_CHUNK 3        /* recopy 3 objetcs/sec */
  452.  
  453. #endif                /* __OPTIONS_H */
  454.